package com.specter.mvc;

/**
 * Note:specter基本框架，支持hibernate,ibatis,struts2.x <br/>
 * Mail:liangthinking@gmail.com
 * 
 * 
 * 
 * ------ base:提供数据交换，同步等功能 ------
 * 
 * 资料：新型数据库的选择：https://www.zhihu.com/question/31750851?sort=created
 * Sharding-JDBC主页：https://shardingsphere.apache.org/index_zh.html
 * Sharding-JDBC介绍：http://www.lupaworld.com/article-263375-1.html
 * Sharding-JDBC样例：https://github.com/yudiandemingzi/spring-boot-sharding-sphere
 * https://www.jianshu.com/p/92af4d298fea
 * 
 * 其他分表实现：基于 AbstractRoutingDataSource / https://gitee.com/kkk001/mybatis-shard
 * 
 * 
 * # 数据连接（orm）
 * 说明：数据库设计过程中尽量先考虑好垂直分库分表设计。
 *** 
 * 垂直拆分：***
 * 按照业务类型拆分多个库表。如垂直分库，权限库、基础库、业务库(残联)、运营库(机构)、公益库(残疾) 等；如垂直分表，用户账号表、用户信息表等
 *** 
 * 水平拆分：***
 * 按照数据量分多个结构一样的库表。如水平分库，杭州库、宁波库、绍兴库等；如水平分表，西湖区残疾人表、滨江区残疾人表等。
 * 
 * 
 * ### 一、国级系统
 *** 直接采用分布式数据库***
 * 1. OceanBase https://oceanbase.alipay.com/
 * 2. TiDB https://pingcap.com/
 * 
 * ### 二、省级系统
 *** 采用按照各地市进行水平分库***
 * 1. 权限库集中管理，其他部分库按照地市进行分库
 * 2. 综合统计将定时统计汇总储存，按照区县提前一天统计后存储
 * 3. 市级、省级将对统计结果进行统计。
 * 
 * ### 三、市级系统
 *** 根据需要对特定表进行适当水平分表***
 * 1. 对数据量大的表进行按照区县的水平分表
 * 2. 业务信息表对基础信息适当冗余，不直接关联基础库
 * 3. 所有统计将在基础库中完成，业务完成后自动汇总(数据中心)
 * 
 * ### 四、县级系统
 *** 直接采用单机独立库表***
 * 1. 区县级数据不需要进行拆分
 * 2. 对统计表每项数据需要深入钻取
 * 
 * 
 * 1、所有的基础操作通过baseDao完成，操作的statement约定好，service调用时不用写
 * 2、在service中可以直接调用Template的数据操作方法
 * 3、可以使用模板自动实体类的对应的mapper.xml文件，需手动执行。
 * 4、生成mapper.xml文件时，用一个注释作为分割，上半部分（基础操作）按照实体类生成，下半部分（自定义部分）继承保持部分
 * 5、系统启动时，基础操作的配置自动加载内存中，对于已经配置的可以不用加载。参考mybatis-plus中的BaseMapper原理
 * 6、自动加载statement时是按照JPA的规则来的
 * 
 * 
 * @author Liang.Wang
 * @version Apr 12, 2011 3:14:28 PM
 */
